const formatPrice = (price, needPoint = false) => {
  const str = price || ''
  const num = Number(str.toString().replace(/[^0-9.-]/gi, ''))
  let num1 = num // 整数部分
  let point = '' // 小数点
  let num2 = '' // 小数部分
  // 判断是否有小数位
  if (num != parseInt(num)) {
    const arr = num
      .toFixed(2)
      .toString()
      .split('.')
    num1 = arr[0]
    point = '.'
    num2 = arr[1]
  } else if (needPoint) {
    point = '.'
    num2 = '00'
  }
  const rgx = /(\d+)(\d{3})/ // 正则式定义
  while (rgx.test(num1)) {
    // 正则式匹配
    num1 = num1.toString().replace(rgx, '$1' + ',' + '$2') // 正则式替换
  }
  return num1 + point + num2
}

const formatName = (name) => {
  if (name) {
    if (name.length < 4) {
      return '*' + name.slice(1)
    } else {
      return '**' + name.slice(name.length - 2)
    }
  }
  return ''
}

const formatPhone = (phone) => {
  if (phone) {
    return phone.slice(0, 3) + '****' + phone.slice(7)
  }
  return ''
}

const formatDate = (fmt, date) => {
  let ret
  const opt = {
    'Y+': date.getFullYear().toString(), // 年
    'm+': (date.getMonth() + 1).toString(), // 月
    'd+': date.getDate().toString(), // 日
    'H+': date.getHours().toString(), // 时
    'M+': date.getMinutes().toString(), // 分
    'S+': date.getSeconds().toString() // 秒
    // 有其他格式化字符需求可以继续添加，必须转化成字符串
  }
  for (const k in opt) {
    ret = new RegExp('(' + k + ')').exec(fmt)
    if (ret) {
      fmt = fmt.replace(
        ret[1],
        ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, '0')
      )
    }
  }
  return fmt
}

export {
  formatPrice,
  formatName,
  formatDate,
  formatPhone
}
